//package com.ciaojian.client.auth;
//
//
//import com.ciaojian.client.config.ClientApiProperties;
//import com.ciaojian.client.util.JacksonUtil;
//import com.ciaojian.client.util.StringTool;
//import com.fasterxml.jackson.core.JsonParser;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import io.jsonwebtoken.Claims;
//import io.jsonwebtoken.Jwts;
//import io.jsonwebtoken.SignatureAlgorithm;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//
///**外部调用接口权限处理
// * Token操作类，用户创建token,解析token
// *
// * @author cano
// */
//@Slf4j
//@Component
//public class TokenProvider {
//
//    @Autowired
//    private ClientApiProperties clientApiProperties;
//
//    private static ObjectMapper objectMapper = new ObjectMapper();
//
//    /**
//     * objectMapper 配置
//     */
//    static {
//        //设置Feature.ALLOW_SINGLE_QUOTES为true，表示允许单引号
//        objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
//        objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
//        objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
//        objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
//    }
//
//    /**
//     * 构建token
//     *
//     * @param jwtUser jwt用户对象
//     * @return
//     */
//    public String buildToken(TokenUser jwtUser) {
//        // 调试先缓存30minute
//        return TokenConsts.JWT_PREFIX + Jwts.builder()
//                .setIssuer(jwtUser.getUserId())
//                .setId(jwtUser.getTokenId())
//                .setSubject(JacksonUtil.toString(jwtUser))
//                //.setIssuedAt(new Date(currentTime))
//                //.setExpiration(new Date(currentTime + 2400000))
//                .signWith(SignatureAlgorithm.HS256, "ciaojian")
//                .compact();
//    }
//
//    /**
//     * 从token中获取Claims内容：验证token
//     *
//     * @param token
//     * @return
//     */
//    private Claims parseToken(String token) {
//        if (token.startsWith(TokenConsts.JWT_PREFIX)) {
//            token = StringTool.subString(token, TokenConsts.JWT_PREFIX.length());
//        }
//        Claims claims=null;
//        try {
//            claims= Jwts.parser()
//                    .setSigningKey("ciaojian")
//                    .parseClaimsJws(token)
//                    .getBody();
//        }catch (Exception e){
//            log.error("token error:"+e.getMessage(),e);
//        }
//        return claims;
//    }
//
//    /**
//     * 获取token
//     * @param token
//     * @return
//     */
//    public TokenUser getTokenUser(String token) {
//        try {
//            Claims claims=parseToken(token);
//            if(claims==null){
//                return null;
//            }
//            String subject = claims.getSubject();
//            return JacksonUtil.parse(subject, TokenUser.class);
//        }catch (Exception e){
//            log.error(e.getMessage(),e);
//            return null;
//        }
//    }
//
//    /**
//     * 从token获取用户id
//     *
//     * @param token
//     * @return
//     */
//    public String getUserId(String token) {
//        return parseToken(token).getIssuer();
//    }
//
//}
